# Don't let CTOR_LIST end up in sdata section.
# FIXME: This is the default.
CRTSTUFF_T_CFLAGS =

# We exclude those because the libgcc2.c default versions do not support
# the SPU single-precision format (round towards zero).  We provide our
# own versions below and/or via direct expansion.
LIB2FUNCS_EXCLUDE = _floatdisf _floatundisf _floattisf _floatunstisf

LIB2ADD_ST = $(srcdir)/config/spu/float_unssidf.c \
	     $(srcdir)/config/spu/float_unsdidf.c \
	     $(srcdir)/config/spu/float_unsdisf.c \
	     $(srcdir)/config/spu/float_disf.c \
	     $(srcdir)/config/spu/mfc_tag_table.c \
	     $(srcdir)/config/spu/mfc_tag_reserve.c \
	     $(srcdir)/config/spu/mfc_tag_release.c \
	     $(srcdir)/config/spu/mfc_multi_tag_reserve.c \
	     $(srcdir)/config/spu/mfc_multi_tag_release.c \
	     $(srcdir)/config/spu/multi3.c \
	     $(srcdir)/config/spu/divmodti4.c \
	     $(srcdir)/config/spu/divv2df3.c

# Build TImode conversion routines to support Fortran 128-bit
# integer data types.
LIB2_SIDITI_CONV_FUNCS = yes

HOST_LIBGCC2_CFLAGS += -mwarn-reloc -D__IN_LIBGCC2

# Neither gcc or newlib seem to have a standard way to generate multiple
# crt*.o files.  So we don't use the standard crt0.o name anymore.

cachemgr.o: $(srcdir)/config/spu/cachemgr.c
	$(gcc_compile) -c $<

# Specialised rule to add a -D flag.
cachemgr_nonatomic.o: $(srcdir)/config/spu/cachemgr.c
	$(gcc_compile) -DNONATOMIC -c $<

libgcc_%.a: %.o
	$(AR_FOR_TARGET) -rcs $@ $<

cache8k.o: $(srcdir)/config/spu/cache.S
	$(gcc_compile) -D__CACHE_SIZE__=8 -c $<

cache16k.o: $(srcdir)/config/spu/cache.S
	$(gcc_compile) -D__CACHE_SIZE__=16 -c $<

cache32k.o: $(srcdir)/config/spu/cache.S
	$(gcc_compile) -D__CACHE_SIZE__=32 -c $<

cache64k.o: $(srcdir)/config/spu/cache.S
	$(gcc_compile) -D__CACHE_SIZE__=64 -c $<

cache128k.o: $(srcdir)/config/spu/cache.S
	$(gcc_compile) -D__CACHE_SIZE__=128 -c $<

# We provide our own version of __divdf3 that performs better and has
# better support for non-default rounding modes.
DPBIT_FUNCS := $(filter-out _div_df, $(DPBIT_FUNCS))
